//! \file CKey.h
//! \brief TODO: Document
//!
//! TODO: document
// -----------------------------------------------------------------------------
//! This program is free software; you can redistribute it and/or
//! modify it under the terms of the GNU General Public License
//! as published by the Free Software Foundation; either version 2
//! of the License, or (at your option) any later version.
//!
//! This program is distributed in the hope that it will be useful,
//! but WITHOUT ANY WARRANTY; without even the implied warranty of
//! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//! GNU General Public License for more details.
//!
//! You should have received a copy of the GNU General Public License
//! along with this program; if not, write to the Free Software Foundation,
//! Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
// -----------------------------------------------------------------------------

#include "System.h"

#include <string>

#ifndef dCKEY_NAME_H_
  #define dCKEY_NAME_H_

  namespace code_sheriff
  {

    // =========================================================================
    //! \typedef TKEY
    //! \brief TODO: document
    // -------------------------------------------------------------------------
    typedef TUINT32 TKEY;

    // =====[ Keys ]============================================================
    static const TKEY KEY_CONFIG_FILE                 = 0; /*!< TODO: document  */
    static const TKEY KEY_WHITE_SPACE_TAB_POLICY      = 1; /*!< TODO: document  */
    static const TKEY KEY_WHITE_SPACE_TAB_SIZE        = 2; /*!< TODO: document  */
    static const TKEY KEY_WHITE_SPACE_INDENT_SIZE     = 3; /*!< TODO: document  */
    static const TKEY KEY_WHITE_SPACE_PRINT_MARGIN    = 4; /*!< TODO: document  */
    static const TKEY KEY_INVALID                     = 5; /*!< TODO: document  */
    static const TKEY KEY_END_OF_LIST                 = 6; /*!< TODO: document  */

    // TODO: document
    class CKey
    {
      public:

        struct TEntry
        {
          const std::string Short;  //!< TODO: document
          const std::string Long;   //!< TODO: document
          const std::string Conf;   //!< TODO: document configuration file syntax.
          const std::string Brief;  //!< TODO: document brief description
        };



        static const struct TEntry* get(TKEY Key);
        static TKEY toKey(std::string Value);

        // TODO: remove
//        CKey();
//        virtual ~CKey();
    };

  } // namespace code_sheriff

#endif // dCKEY_NAME_H_


